home *** CD-ROM | disk | FTP | other *** search
- Path: wuarchive!brutus.cs.uiuc.edu!uakari.primate.wisc.edu!xanth!cs.odu.edu!Amiga-Request
- From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i134: rcs patch - unofficial patch to revision control system diff, Part01/01
- Message-ID: <12133@xanth.cs.odu.edu>
- Date: 10 Apr 90 21:55:24 GMT
- Sender: tadguy@cs.odu.edu
- Reply-To: acs@pccuts.pcc.amdahl.com (Tony Sumrall)
- Lines: 257
- Approved: tadguy@cs.odu.edu (Tad Guy)
- X-Mail-Submissions-To: Amiga@cs.odu.edu
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: acs@pccuts.pcc.amdahl.com (Tony Sumrall)
- Posting-number: Volume 90, Issue 134
- Archive-name: unix/rcs/upatch01/part01
-
- [ The original sources were posted in 1989. Check a comp.sources.amiga
- archive site if you need them. ...tad ]
-
- This shell archive contains patches for the diff program associated with
- RCS for the Amiga (Fish disk 281, comp.sources.amiga postings v89i216
- through v89i229) and address 2 problems:
-
- 1) an attempt to compare a file with a non-existent file would elicit an
- error message with null text
- 2) if one or more of the arguments to diff was a device or an assigned
- name, diff would use a / to separate filename components instead of
- using a :.
-
- To apply these patches:
-
- * remove all lines above the first line beginning with #,
- * run through /bin/sh or a suitable unshar program,
- * copy the 2 resulting files to a directory containing the source for
- diff,
- * using patch from Fish disk # 296 or patch version 2.0 from Fish disk
- # 129, say:
-
- patch < amiga1.c.diffs and then
- patch < diff.c.diffs
-
- * compile the new diff following the instructions which were packaged with
- the original version.
-
- I've been using diff with these patches applied for quite some time with
- no ill effects.
- --
- Tony Sumrall responsible for VT100 2.9A (and 2.9 and 2.8a and 2.8 and...)
- acs@pccuts.pcc.amdahl.com <=> amdahl!pccuts!acs
-
- [ Opinions expressed herein are the author's and should not be construed
- to reflect the views of Amdahl Corp. ]
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: amiga1.c.diffs diff.c.diffs
- # Wrapped by tadguy@xanth on Tue Apr 10 17:54:34 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'amiga1.c.diffs' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'amiga1.c.diffs'\"
- else
- echo shar: Extracting \"'amiga1.c.diffs'\" \(592 characters\)
- sed "s/^X//" >'amiga1.c.diffs' <<'END_OF_FILE'
- XIndex: amiga1.c
- X*** Oamiga1.c Thu Mar 22 09:24:29 1990
- X--- amiga1.c Thu Mar 8 21:52:50 1990
- X***************
- X*** 47,54 ****
- X long l;
- X struct FileInfoBlock *fp,*malloc();
- X
- X! if ((l=Lock(name, ACCESS_READ)) == 0)
- X return(-1);
- X fp = malloc(sizeof(struct FileInfoBlock));
- X Examine(l, fp);
- X buf->st_attr = fp->fib_Protection;
- X--- 47,56 ----
- X long l;
- X struct FileInfoBlock *fp,*malloc();
- X
- X! if ((l=Lock(name, ACCESS_READ)) == 0) {
- X! errno = ENOENT;
- X return(-1);
- X+ }
- X fp = malloc(sizeof(struct FileInfoBlock));
- X Examine(l, fp);
- X buf->st_attr = fp->fib_Protection;
- END_OF_FILE
- if test 592 -ne `wc -c <'amiga1.c.diffs'`; then
- echo shar: \"'amiga1.c.diffs'\" unpacked with wrong size!
- fi
- # end of 'amiga1.c.diffs'
- fi
- if test -f 'diff.c.diffs' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'diff.c.diffs'\"
- else
- echo shar: Extracting \"'diff.c.diffs'\" \(3571 characters\)
- sed "s/^X//" >'diff.c.diffs' <<'END_OF_FILE'
- XIndex: diff.c
- X*** Odiff.c Thu Mar 22 09:24:29 1990
- X--- diff.c Sun Mar 11 12:01:14 1990
- X***************
- X*** 378,386 ****
- X if (name1 == 0)
- X name1 = name0;
- X
- X! inf[0].name = dir0 == 0 ? name0 : concat (dir0, "/", name0);
- X! inf[1].name = dir1 == 0 ? name1 : concat (dir1, "/", name1);
- X
- X /* Stat the files. Record whether they are directories.
- X Record in stat_result whether stat fails. */
- X
- X--- 378,413 ----
- X if (name1 == 0)
- X name1 = name0;
- X
- X! if(dir0 == 0)
- X! inf[0].name = name0;
- X! else
- X! {
- X! if(strrchr(dir0, '/'))
- X! inf[0].name = concat(dir0, "/", name0);
- X! else
- X! {
- X! if(*(dir0 + strlen(dir0) - 1) == ':')
- X! inf[0].name = concat(dir0, "", name0);
- X! else
- X! inf[0].name = concat(dir0, "/", name0);
- X! }
- X! }
- X
- X+ if(dir1 == 0)
- X+ inf[1].name = name1;
- X+ else
- X+ {
- X+ if(strrchr(dir1, '/'))
- X+ inf[1].name = concat(dir1, "/", name1);
- X+ else
- X+ {
- X+ if(*(dir1 + strlen(dir1) - 1) == ':')
- X+ inf[1].name = concat(dir1, "", name1);
- X+ else
- X+ inf[1].name = concat(dir1, "/", name1);
- X+ }
- X+ }
- X+
- X /* Stat the files. Record whether they are directories.
- X Record in stat_result whether stat fails. */
- X
- X***************
- X*** 402,413 ****
- X perror_with_name (filename);
- X errorcount = 1;
- X }
- X! else
- X #ifdef AMIGA
- X inf[i].dir_p = (inf[i].stat.st_type > 0);
- X #else
- X inf[i].dir_p = (S_IFDIR == (inf[i].stat.st_mode & S_IFMT));
- X #endif
- X }
- X }
- X
- X--- 429,441 ----
- X perror_with_name (filename);
- X errorcount = 1;
- X }
- X! else {
- X #ifdef AMIGA
- X inf[i].dir_p = (inf[i].stat.st_type > 0);
- X #else
- X inf[i].dir_p = (S_IFDIR == (inf[i].stat.st_mode & S_IFMT));
- X #endif
- X+ }
- X }
- X }
- X
- X***************
- X*** 427,432 ****
- X--- 455,461 ----
- X
- X if (name0 == 0)
- X inf[0].dir_p = inf[1].dir_p;
- X+
- X if (name1 == 0)
- X inf[1].dir_p = inf[0].dir_p;
- X
- X***************
- X*** 495,504 ****
- X int dir_arg = (inf[0].dir_p ? 0 : 1);
- X int fnm_arg = (inf[0].dir_p ? 1 : 0);
- X char *p = strrchr(inf[fnm_arg].name, '/');
- X! char *filename = concat (inf[dir_arg].name, "/",
- X! (p ? p+1 : inf[fnm_arg].name));
- X
- X #ifdef AMIGA
- X inf[dir_arg].dir_p = (getfa(filename) == 1);
- X if (!inf[dir_arg].dir_p)
- X {
- X--- 524,549 ----
- X int dir_arg = (inf[0].dir_p ? 0 : 1);
- X int fnm_arg = (inf[0].dir_p ? 1 : 0);
- X char *p = strrchr(inf[fnm_arg].name, '/');
- X! char *filename;
- X
- X #ifdef AMIGA
- X+ char *tp = inf[dir_arg].name;
- X+ int term = (*(tp + strlen(tp) - 1) == ':' ? 1 : 0);
- X+
- X+ if(!p) {
- X+ /* inf[dir_arg].name ends with a ':', a '/' or neither. If it
- X+ ** ends with ':' then simply concat otherwise separate with a '/'.
- X+ ** Note that we also have to find out if there is a separator in the
- X+ ** filename, too so we know where to copy FROM when we create the new
- X+ ** filename.
- X+ */
- X+ char *p1 = strrchr(inf[fnm_arg].name, ':');
- X+
- X+ filename = concat(inf[dir_arg].name, term ? "" : "/",
- X+ p1 ? p1+1 : inf[fnm_arg].name);
- X+ } else
- X+ filename = concat (inf[dir_arg].name, term ? "" : "/", p+1);
- X+
- X inf[dir_arg].dir_p = (getfa(filename) == 1);
- X if (!inf[dir_arg].dir_p)
- X {
- X***************
- X*** 521,526 ****
- X--- 566,573 ----
- X val = 2;
- X }
- X #else
- X+ filename = concat (inf[dir_arg].name, "/",
- X+ (p ? p+1 : inf[fnm_arg].name));
- X inf[dir_arg].desc = open (filename, O_RDONLY, 0);
- X
- X if (0 > inf[dir_arg].desc)
- END_OF_FILE
- if test 3571 -ne `wc -c <'diff.c.diffs'`; then
- echo shar: \"'diff.c.diffs'\" unpacked with wrong size!
- fi
- # end of 'diff.c.diffs'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
- Mail comments to the moderator at <amiga-request@cs.odu.edu>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-